﻿/************************************************************************************
 * 漠然(459699936@qq.com) 2015/1/10 12:09:25
 ************************************************************************************/
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Justin.Core
{
    public  class CoreStartup
    {
        /// <summary>
        /// 单例创建函数
        /// </summary>
        /// <returns></returns>
        public CoreStartup Create() {
            if (coreStartup == null) {
                lock (coreStartup) {
                    if (coreStartup == null)
                        coreStartup = new CoreStartup();
                }
            }
            return coreStartup;
        }

       /// <summary>
        /// 单例缓存
       /// </summary>
        private static CoreStartup coreStartup;

        /// <summary>
        /// 私有创建函数
        /// </summary>
        private CoreStartup() { }

        /// <summary>
        /// 插件所在的目录
        /// </summary>
        private string addinsDir = "./addins/";

        /// <summary>
        /// 配置插件所在的目录
        /// </summary>
        /// <param name="dir"></param>
        public void SetAddinsDir(string dir) {
            this.addinsDir = dir;
        }

        /// <summary>
        /// 插件系统启动接口
        /// </summary>
        public void Run() {
            init();
            load();
        }

        /// <summary>
        /// 执行插件的装载
        /// </summary>
        private void load() {

            //扫描插件子目录下面的所有配置文件
            //一次创建模块并且解析功能组
            //将解析功能挂载到插件树

            throw new NotImplementedException();
        }

        /// <summary>
        /// 初始化插件系统
        /// </summary>
        private void init() {
            unstall();
            update();
        }

        /// <summary>
        /// 执行插件更新文件的解压缩替换
        /// </summary>
        private void update() {
            //查询需要更新的插件信息
            //依次执行更新并且改写更新状态
            throw new NotImplementedException();
        }

        /// <summary>
        /// 执行卸载插件文件的删除操作
        /// </summary>
        private void unstall() {
            //查询需要执行删除的插件目录
            //执行插件的删除
            throw new NotImplementedException();
        }

    }
}
